#ifndef MOTEURGRAPHIQUE_H
#define MOTEURGRAPHIQUE_H

#include <QApplication>

#include "moteur.h"
#include "fenetrePrincipale.h"
#include "joueur.h"
#include "joueurreseau.h"
#include "joueuria.h"

class MoteurGraphique : public Moteur {
    Q_OBJECT
    
    public:
        MoteurGraphique(Jeu * parent, int argc, char *argv[]) : Moteur(parent) {
            app = new QApplication(argc, argv);

            fenetrePrincipale = new FenetrePrincipale(this);
            fenetrePrincipale->show();
            
            app->processEvents();
            //app->exec();
        }
        ~MoteurGraphique() {}

        virtual void executer();

    private:
        virtual void traiterMessage(Message m);
        // traitement des messages
        //void traiterDemandeConnexion(Message m); //???

        void traiterListePartiesOuvertes(Message m);
        void traiterInvitation(Message m);
        void traiterPartieAcceptee(Message m);
        void traiterPartieRefusee(Message m);

        void traiterEchiquierModifie(Message m);
        void traiterFinPartie(Message m);
        void traiterEchec(Message m);
        void traiterMauvaisCoup(Message m);

        FenetrePrincipale *fenetrePrincipale;
        QApplication *app;
};

#endif // MOTEURJGRAPHIQUE_H
